home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / aptitude-run-state-bundle < prev    next >
Text File  |  2009-09-28  |  3KB  |  139 lines

  1. #!/bin/bash
  2.  
  3. NO_CLEAN=0
  4. STATEDIR=0
  5. UNPACK_ONLY=0
  6. HELP=0
  7. APPEND=1
  8.  
  9. DONE=0
  10. while [ $DONE = 0 ]
  11. do
  12.   case "$1" in
  13.       --append-args )
  14.       APPEND=1
  15.       shift
  16.       ;;
  17.       --help )
  18.       HELP=1
  19.       shift
  20.       ;;
  21.       --no-clean )
  22.       NO_CLEAN=1
  23.       shift
  24.       ;;
  25.       --prepend-args )
  26.       APPEND=0
  27.       shift
  28.       ;;
  29.       --really-clean )
  30.       NO_CLEAN=0
  31.       shift
  32.       ;;
  33.       --statedir )
  34.       STATEDIR=1
  35.       NO_CLEAN=1
  36.       shift
  37.       ;;
  38.       --unpack )
  39.       UNPACK_ONLY=1
  40.       shift
  41.       ;;
  42.       * )
  43.       DONE=1
  44.       ;;
  45.   esac
  46. done
  47.  
  48. if ( [ $UNPACK_ONLY = 0 ] && [ "$#" -lt 1 ] ) ||
  49.    ( [ $UNPACK_ONLY = 1 ] && [ "$#" -ne 1 ] ) ||
  50.    [ $HELP = 1 ]
  51. then
  52.     echo "Usage: $0 [options] <input-file> [<program> [arguments ...]]"
  53.     echo
  54.     echo "This command will unpack the given archive of aptitude state"
  55.     echo "information, then invoke the given program with the given"
  56.     echo "list of arguments, passing appropriate -o options to cause"
  57.     echo "aptitude to use the contents of that archive as its global"
  58.     echo "data store."
  59.     echo
  60.     echo "Options:"
  61.     echo "  --append-args    Place the generated arguments at the end of"
  62.     echo "                   the command line (default)."
  63.     echo "  --help           Display this message and exit."
  64.     echo "  --no-clean       Do not remove the temporary directory after"
  65.     echo "                   invoking aptitude."
  66.     echo "  --prepend-args   Place the generated arguments at the beginning"
  67.     echo "                   of the command line."
  68.     echo "  --really-clean   Remove the state directory, even if --statedir"
  69.     echo "                   was passed as an argument."
  70.     echo "  --statedir       The <input-file> is an unpacked aptitude bundle,"
  71.     echo "                   not a bundle file; implicitly sets --no-clean."
  72.     echo "  --unpack         Just unpack the <input-file>, don't run aptitude."
  73.     exit 1
  74. fi
  75.  
  76. INPUTFILE="$1"
  77. shift
  78.  
  79. if [ "$#" -lt 1 ]
  80. then
  81.     PROGRAM=aptitude
  82. else
  83.     PROGRAM="$1"
  84.     shift
  85. fi
  86.  
  87. if [ $STATEDIR = 0 ]
  88. then
  89.     tempdir=$(mktemp -p ${TMPDIR:-/tmp} -d aptitudebug.XXXXXXXXX) || exit 1
  90.     if [ -z "$tempdir" ]
  91.     then
  92.     exit 1
  93.     fi
  94. else
  95.     tempdir=$INPUTFILE
  96. fi
  97.  
  98. trap '
  99. if [ $NO_CLEAN = 1 ]
  100. then echo "Leaving final state in $tempdir"
  101. else echo "Removing $tempdir"; rm -fr $tempdir
  102. fi' 0
  103.  
  104. if [ $STATEDIR = 0 ]
  105. then
  106.     if [ -d "$INPUTFILE" ]
  107.     then
  108.     echo "Can't use $INPUTFILE as the input bundle: it's a directory."
  109.     exit 1
  110.     fi
  111.     if ! [ -f "$INPUTFILE" ]
  112.     then
  113.     echo "Can't use $INPUTFILE as the input bundle: file not found."
  114.     exit 1
  115.     fi
  116.  
  117.     if file "$INPUTFILE" | grep bzip2 2>/dev/null > /dev/null
  118.     then
  119.     DECOMPRESSOR=bunzip2
  120.     else
  121.     DECOMPRESSOR=gunzip
  122.     fi
  123.  
  124.     ($DECOMPRESSOR -c < "$INPUTFILE") | (cd "$tempdir" && tar x) || exit 1
  125. fi
  126.  
  127. if [ $UNPACK_ONLY = 1 ]
  128. then
  129.     exit 0
  130. fi
  131.  
  132. if [ "$APPEND" = 1 ]
  133. then
  134.     "$PROGRAM" "$@" -o "Dir=$tempdir" -o "Dir::State::status=$tempdir/var/lib/dpkg/status"
  135. else
  136.  
  137.     "$PROGRAM" -o "Dir=$tempdir" -o "Dir::State::status=$tempdir/var/lib/dpkg/status" "$@"
  138. fi
  139.